
package com.eva.android;

import net.x52im.mobileimsdk.android.utils.MBThreadPoolExecutor;

import java.util.Observable;
import java.util.Observer;

/**
 * 在主线程中进行观察者通知的观察者实现类。
 * <p>
 * 当观察者用于UI任务时，建议首选使用本类，而不是直接使用 {@link Observer} ！
 *
 * @author Jack Jiang
 * @since 8.0
 */
public abstract class ObserverMain implements Observer {

    @Override
    public void update(Observable o, Object arg) {
        // 在主线程中通知观察者，以便观察者在ui层进行处理
        MBThreadPoolExecutor.runOnMainThread(() -> {
            updateInMain(o, arg);
        });
    }

    protected abstract void updateInMain(Observable o, Object arg);
}
